PATCH {HTTP}

Note that, the headerContent-Type should be set to application/json-patch+json media type to indicate that it accepts a set of patch operations, but it’s not mandatory. You can have it as application/json and still, it will work.

PATCH /users

[  
	{ "op": "test", "path": "/a/b/c", "value": "foo" },  
	{ "op": "remove", "path": "/a/b/c" },  
	{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] },  
	{ "op": "replace", "path": "/a/b/c", "value": 42 },  
	{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" },  
	{ "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }  
]

RFC 6901

issue에 대한 응답

아래는 PATCH 요청에 대하여 jsonpatch 모듈로 파싱, 유저 프로파일을 수정하는 코드 스니펫이 들어있는 이슈 대화 목록이다.

bookstores/issues/20

정리하자면,

  1. PATCH 하고자 하는 데이터 칼럼의 리스트만 프론트에서 쏴서 jsonpatch.apply_patch 에서 수정된 데이터의 dict를 받는다.
  2. 다만, User의 속성이 단순 dict가 아니기 때문에 apply_patch의 리턴값을 사용하지는 못하고 for 문을 돌면서 필드의 값을 일일이 수정하는 모습을 보이고 있다.
  3. 최근 코드를 보니, DRF의 Serializer로 완전히 대체한 모습을 볼 수 있다. PATCH 메서드는 사용했으나 body는 RFC6901를 따르지 않았는데, 의도한 거라고 볼 수 있을 것 같아보인다..?
  4. Serializer에서 제공하는 partial=True를 그냥 사용하면 PATCH "op": "replace"와 완전히 동등한 코드를 쓸 수 있는데.